In a remote presentation session, a client computer and a server computer communicate across a communications network. The client sends the server locally-received input, such as mouse cursor movements and keyboard presses. In turn, the server receives this input and performs processing associated with it, such as executing an application in a user session. When the server performs processing that results in output, such as graphical output or sound, the server sends this output to the client for presentation. In this manner, applications appear to a user of the client to execute locally on the client when, they in fact, execute on the server.
The amount of graphical output generated by a remote presentation server (frequently referred to as a plurality of “frames”) often taxes or exceeds the bandwidth available between the server and the client. In view of this, it is common for the server to encode the graphical output in a way that compresses it before sending the encoded graphical output to the client. There are many problems with prior techniques for compressing graphical output in a remote presentation session, some of which are well known.